Tento program se skládá z těchto 7 unit:
ukino - hlavní okno
userver - třída TServer, která zapouzdřuje všechna data a operace s nimi
uvpr - okno pro úpravu představení nebo vytvoření nového
ukpr - okno pro úpravu konkrétního představení nebo vytvoření nového
uuziv - okno pro úpravu uživatele nebo vytvoření nového
uXMLpar - načtení XML souboru
Ukom - unita, ve které je většina operací související s komunikací (více v sekci komunikace)
základní informace
Tento program je naprogramován tak, že v hlavní unitě je jedna instance třídy TServer
pojmenovaná server
, která obsahuje všechna data a operace s nimi (přidávání, mazání, upravování). Ve všech ostatních unitách se pak pak pouze volají příslušné metody této třídy, které upravují data podle podle předaných parametrů. Tím jsem chtěl dosáhnout jisté konzistence dat a také soustředění všech operací na jedno místo, resp. oddělení práce s vlastními daty od uživatelského interface (vesměs se totiž jedná o operace s ukazately, které by roztroušené po všech unitách nevypadaly dobře). Vlastně by se dalo říct, že unita userver
je nezávislá na uživatelském interface.
Komunikace jednotlivých oken mezi sebou:
V hlavní unitě jsem si nadeklaroval 4 proměnné (vždy ukazatel na něco):
AktUzivatel:PUzivatel;
- pro okno pro úpravu uživatele nebo vytvoření nového
AktPredstaveni:PPredstaveni;
- pro okno pro úpravu představení nebo vytvoření nového
AktKPredstaveni:PKPredstaveni; AktSal:PSal;
- pro okno pro úpravu konkrétního představení nebo vytvoření nového
Princip je takový, že před tím, než se provede otevření okna, tak se nastaví příslušná proměnná. Pokud se jedná o úpravu, tak se do proměnné nastaví ukazatel na upravovanou položku a pokud se má vytvářet nová položka, tak se do ní nastaví nil
. Okno pak už ví, jak se má chovat.
userver
Tato unita vyváží hlavně třídu TServer
, ale také několik dalších typů (většinou záznam a ukazatel na něj). Vše je podrobně okomentováno přímo ve zdrojovém kódu. Zde se podrobněji zmíním jen o třídě TServer
.
Ta obsahuje tyto datové položky: uzivatele:PUzivatel; predstaveni:PPredstaveni; saly:PSal;
, což jsou vlastně ukazatele na začátky jednosměrných lineárních seznamů. Dále pak tato třída obsahuje metody, které pracují s těmito daty, tedy téměř výhradně práce s ukazately. Vše je opět okomentováno.
Metody jsou pojmenovány tímto způsobem:
- každé slovo začíná velkým písmenem. Z prvního slova lze usoudit, s jakými daty metoda pracuje (např. Uzivatel, Sal, KPredstaveni (konkrétní představení) apod.)
- druhé slovo většinou určuje, co za operaci se bude provádět (např. upravit, pridat apod.)
Metoda pak může vypadat např. takto: function UzivatelPridat(jm,h:string;p:boolean):boolean;
ukino
Toto je hlavní unita, ve které je hlavní okno a je tedy trochu rozsáhlejší. Vedle hlavního okna obsahuje instanci třídy TServer, již zmíněné proměnné pro komunikaci s ostatními okny, proměnnou pz typu integer (označuje, jestli jsem změnil hodnotu SpinEditů, CheckBoxů apod. já nebo uživatel) a proměnnou oznacene, což je ukazatel na seznam označených sedadel na druhé záložce.
uvpr, ukpr, uuziv
V těchto unitách se provádí hlavně kontrola zadaných údajů a uložení do databáze (tedy zavolání příslušné metody třídy TServer).
uXMLpar
Tato unita slouží k načtení XML souboru do stromu, se kterým se dále pracuje při vytváření třídy TServer.